<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>理解http</title>
</head>
<body>
	<!-- restful api -->
	<!-- 输入url打开网页 -->
	<!-- AJAX获取数据 -->
	<!-- img 加载图片  -->
	<!-- cache-control public..private.. -->
	<!-- must-revalidate no-cache no-store.. -->
	<!-- last-modified if-mofified-since etag if-none-match ... -->
	<!-- redirect app_cache  dns tcp request response  -->
	网络协议分层
		五层模型：应用层-传输层-网络层-数据链路层-物理层
		物理设备传输数据-通信实体链路链接-逻辑链路
	传输层
		tcp end-to-end 可靠的服务
		高层屏蔽下层的数据通信细节
	应用层
		为软件提供了很多服务
		tcp之上
		屏蔽下层细节
	发展历史
		http/0.9--只有get,没有header等，发送完毕 关闭tcp连接
		http/1.0--增加很多命令 status code - header-多字符 多部分发送 权限 缓存
		http/1.1--持久连接 pipeline host其他命令
		http/2  --二进制数据传输 连接请求发送不按顺序来 头信息压缩推送(推送-并行请求里面的js css)
	三次握手
		需要创建tcp连接
		发送：标志位 SYN=1,Seq=x,
		返回：SYN=1，ACK=x+1，seq=y,
		发送：ACK=Y+1,Seq=z
		13789-80本机端口到服务器
	URI URL URN
		URI统一资源标志符==找到并某种方式获取资源
		url统一资源定位器==协议 schema + (用户认证,基本不用) + 定位机器 域名(dns解析成ip)或者ip + 端口
			+ 路由(path 文件路由类型) + 搜索方式（传参） + 片段，锚点定位？。
			http://user:pass@host.com:80/path?query=string#hash
		URN永久统一资源定位符==资源换位置也能找到，没有成熟的方案
	HTTP报文
		请求和响应格式
			请求
				GET /TETS/FSFS HTTP/1.0
				HUAN HANG  
				首行 method(GET/POST...有语义的) + url(路由相关) + 协议版本
				header 传输内容的描述
			响应报文
				首行 code(状态) ok(明文含义)
				首部 后加一个空行
		http方法
			定义对资源的操作（restful接口）
			常用GET POST
		http code
			服务器对请求的处理结果
			1~199：操作要持续进行
			200~299：成功
			300~399：重定向
			400~499：发送的请求有问题
			500~599：服务器有问题
			。。。好的http服务可以通过code判断结果

	NODE.js
		最简单的http服务
	http客户端 发送请求接收和处理结果
		general 首行
		curl 请求返回内容
		curl baidu.com
		curl www.baidu.com
		
	跨域请求问题
		浏览器中才存在的一种机制===
		服务器头部 '...:"*"'
		*:任何域名都能访问。。。
		'http://baidu.com'
		script link img ...
	CORS 预请求
		GET HEAD POST 
		PLAIN FORM-DATA X-WWW-FORM-URLENCODED
		请求头




























</body>
</html>